using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Marlimer.Logical.Comercial;
using Marlimer.Logical.Universal;
using Marlimer.Common;
using Marlimer.Logistico.Mantenimientos;  

namespace Marlimer.Logistico.Consultas
{
    public partial class frm_ConsultaProveedores : Form
    {
        lcom_GiroNegocio lcom_gironegocio = new lcom_GiroNegocio();
        lcom_Modulo lcom_modulo = new lcom_Modulo();
        lcom_Ruta lcom_ruta = new lcom_Ruta();
        luni_Ubigeo luni_ubigeo = new luni_Ubigeo();
        luni_TipoDocIde luni_tipodocide = new luni_TipoDocIde();
        lcom_Proveedor lcom_proveedor = new lcom_Proveedor();
 
        List<itemsGrilla> itemsGrid = new List<itemsGrilla>();

        private int ccod_provpub;
        private bool devolver = false;

        public frm_ConsultaProveedores()
        {
            InitializeComponent();
            //posicion inicial
            this.Location = new Point(0, 0); 
        }

        public frm_ConsultaProveedores(int modo)
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterParent;   
        }

        private void frm_ConsultaProveedores_Load(object sender, EventArgs e)
        {
            //cargar estructura de grilla;
            itemsGrid.Add(new itemsGrilla("ccod_prov", "Codigo", 50, true, true, DataGridViewContentAlignment.MiddleRight));
            itemsGrid.Add(new itemsGrilla("craz_soc", "Razon Social", 180, true, true, DataGridViewContentAlignment.MiddleLeft));
            itemsGrid.Add(new itemsGrilla("cdes_docide", "Tip.Doc.", 70, true, true, DataGridViewContentAlignment.MiddleLeft));
            itemsGrid.Add(new itemsGrilla("cnum_docide", "Doc.Iden", 80, true, true, DataGridViewContentAlignment.MiddleLeft));
            itemsGrid.Add(new itemsGrilla("cdir_fiscal", "Direccion", 200, true, true, DataGridViewContentAlignment.MiddleLeft));
            itemsGrid.Add(new itemsGrilla("cabre_ubi", "Distrito", 100, true, true, DataGridViewContentAlignment.MiddleLeft));
            itemsGrid.Add(new itemsGrilla("cstatus", "Estado", 50, true, true, DataGridViewContentAlignment.MiddleCenter));
            

            //carga combos
            CargarCombos();
            //configurar rejilla
            ConfigurarRejilla(); 
        }

        private void ConfigurarRejilla()
        {
            gridResultados.Columns.Clear();
            gridResultados.Columns.Add(Util.createDataGridTextColumn("Codigo", 50, true, true, DataGridViewContentAlignment.MiddleRight));
            gridResultados.Columns.Add(Util.createDataGridTextColumn("Razon Social", 180, true, true, DataGridViewContentAlignment.MiddleLeft));
            gridResultados.Columns.Add(Util.createDataGridTextColumn("Tip.Doc", 70, true, true, DataGridViewContentAlignment.MiddleLeft));
            gridResultados.Columns.Add(Util.createDataGridTextColumn("Doc.Iden", 80, true, true, DataGridViewContentAlignment.MiddleLeft));
            gridResultados.Columns.Add(Util.createDataGridTextColumn("Direccion", 200, true, true, DataGridViewContentAlignment.MiddleLeft));
            gridResultados.Columns.Add(Util.createDataGridTextColumn("Distrito", 100, true, true, DataGridViewContentAlignment.MiddleLeft));
            gridResultados.Columns.Add(Util.createDataGridTextColumn("Estado", 50, true, true, DataGridViewContentAlignment.MiddleCenter));

            //gridResultados.AllowUserToResizeColumns = false;
            gridResultados.AllowUserToResizeRows = false;
            gridResultados.RowHeadersVisible = false;
            gridResultados.AllowUserToAddRows = false;
            gridResultados.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        }


        private void CargarCombos()
        {
            Util.LlenarDataCombo(luni_ubigeo.getDTUbigeo(), cboUbigeo, true);
            Util.LlenarDataCombo(luni_tipodocide.getDTTipoDocIde(), cboDocIden, true);
        }

        private void nuevaBusqueda()
        {
            CargarCombos();
            gridResultados.DataSource = null; 
            ConfigurarRejilla(); 
            txtCodProveedor.Text = "";
            txtRazSocial.Text = "";
            txtDirrec.Text = "";
            txtNumDocIden.Text = "";
            txtCodProveedor.Focus(); 
        }

        private void txtGeneralEntero_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = Util.validaTecla(e.KeyChar, "Entero", ((TextBox)sender).Text, true);
        }

        private void txtGeneralNombres_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.KeyChar = Convert.ToChar(e.KeyChar.ToString().ToUpper());
            e.Handled = Util.validaTecla(e.KeyChar, "Nombres", ((TextBox)sender).Text, true);
        }

        private void txtGeneralDireccion_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.KeyChar = Convert.ToChar(e.KeyChar.ToString().ToUpper());
            e.Handled = Util.validaTecla(e.KeyChar, "Direccion", ((TextBox)sender).Text, true);
        }

        private void cboGeneral_KeyPress(object sender, KeyPressEventArgs e)
        {
            Util.validaEnter(e.KeyChar);
        }

        private void txtGeneral_Leave(object sender, EventArgs e)
        {
            TextBox txt = (TextBox)sender;
            String value = "";
            int valuenum = -1;
            String nametxt = txt.Name;
            object newval = null;

            if (txt.Text.Trim() != "")
            {
                value = txt.Text;
                valuenum = Convert.ToInt32(Util.ToValor(txt.Text));
            }

            switch (nametxt)
            {
                case "txtCodUbigeo":
                    {
                        cboUbigeo.SelectedValue = valuenum;
                        newval = cboUbigeo.SelectedValue;
                        break;
                    }
            }
            txt.Text = Convert.ToString(newval);
        }

        private void cboGeneralDT_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox cbo = (ComboBox)sender;
            String valor = "";
            String namecbo = cbo.Name;
            //validamos que el indice seleccionado sea mayor a -1
            if (cbo.SelectedIndex > -1 && cbo.SelectedValue.ToString() != "System.Data.DataRowView")
            {
                valor = Convert.ToString(cbo.SelectedValue);
            }

            switch (namecbo)
            {
                case "cboUbigeo":
                    {
                        txtCodUbigeo.Text = valor;
                        break;
                    }
            }
        }

        private void txtGeneralSelect_Enter(object sender, EventArgs e)
        {
            Util.selectAllText(((TextBox)sender));
        }


        private void buscar()
        {
            //verificamos que estatus traeremos
            int flg_anulados = 0;

            if (chkAnulados.Checked)
            {
                flg_anulados = 1; 
            }

            DataTable dtresul = lcom_proveedor.getBuscarProveedor(Convert.ToInt32(Util.ToValor(txtCodProveedor.Text)), Convert.ToInt32(cboDocIden.SelectedValue),
                   txtNumDocIden.Text.Trim(), txtRazSocial.Text.Trim(), txtDirrec.Text.Trim(), Convert.ToInt32(cboUbigeo.SelectedValue), flg_anulados);
            
            //verificamos de que hayan resultados
            gridResultados.DataSource = null;
            ConfigurarRejilla();

            if (dtresul.Rows.Count > 0)
            {
                gridResultados.Columns.Clear();
                //recorrer el datagrid
                gridResultados.DataSource = dtresul;
                Util.setRejillaColumns(gridResultados, itemsGrid);
                //Util.aplicarEstatus(gridResultados, "cstatus");
                //Util.hideShowFilasByValor(gridResultados, "cstatus", chkAnulados.Checked);
                lblResultados.Text = "Registros encontrados: " + dtresul.Rows.Count.ToString();   
            }
            else
            {
                //no se encontraron resultados.
                MessageBox.Show("No se encontraron resultados.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                lblResultados.Text = "No se encontraron resultados.";
            }
        }

        private void gridResultados_DoubleClick(object sender, EventArgs e)
        {
            //validamos de que este seleccionado un registro.
            if (gridResultados.CurrentRow != null)
            {
                //verificar que tenga codigo de producto columna 0
                int ccod_prov = Convert.ToInt32(Util.ToValor(Convert.ToString(gridResultados.CurrentRow.Cells[0].Value)));
                if (ccod_prov > 0)
                {
                    //si el se debe devolver un valor
                    if (devolver)
                    {
                        ccod_provpub = ccod_prov;
                        this.Close();
                    }
                    else
                    {
                        frm_Proveedores Frm_Proveedores = new frm_Proveedores();
                        Frm_Proveedores.MdiParent = this.MdiParent;
                        Frm_Proveedores.Visible = true;
                        Frm_Proveedores.CargarProveedor(ccod_prov);
                        Frm_Proveedores.Activate();
                    }
                }
            }
        }

        private void btnAuditoria_Click(object sender, EventArgs e)
        {
            if (gridResultados.CurrentRow != null)
            {
                int ccod_cli = Convert.ToInt32(Util.ToValor(gridResultados.CurrentRow.Cells[0].Value.ToString()));
                //devuelve 
                DataTable dtAudi = new DataTable();
                luni_Auditoria luni_auditoria = new luni_Auditoria();
                dtAudi = luni_auditoria.getAuditoria(ccod_cli, 3);  //tabla clientes
                if (dtAudi.Rows.Count > 0)
                {
                    String msj = Util.doMsjAuditoria(dtAudi);
                    MessageBox.Show(msj, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void gridResultados_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
             //validar el formato para anulados
            if (Convert.ToString(gridResultados.Rows[e.RowIndex].Cells["cstatus"].Value) == "D")
            {
                gridResultados.Rows[e.RowIndex].DefaultCellStyle.ForeColor = System.Drawing.Color.Red;  
            }
        }

        public int getProveedor(Form parent)
        {
            devolver = true;
            this.ShowDialog(parent);
            return ccod_provpub;
        }

        private void tstGenComandos_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            int indice = -1;
            if (sender.GetType().Name == "ToolStrip")
            {
                indice = tlbComandos.Items.IndexOf(e.ClickedItem);
            }
            else
            {
                indice = mnuComandos.DropDownItems.IndexOf(e.ClickedItem);
            }

            switch (indice)
            {
                case 0:     //nuevaBusqueda
                    {
                        nuevaBusqueda();
                        break;
                    }
                case 1:     //ejecutar busqueda
                    {
                        buscar();
                        break;
                    }
            }
        }

        private void chkAnulados_CheckedChanged(object sender, EventArgs e)
        {
            buscar(); 
        }

    }
}